Computers running editing software may be used to edit media containing video and/or audio by performing operations including but not limited to cutting, resizing, layering, compositing, tiling, and/or looping. The source material may be, for example, a digital media file encoded in any of a variety of formats; moreover, an analog source medium may be converted into a digital file, edited, and optionally converted back to an analog format. Traditional computer-based video editing systems may be configured to accommodate single or multiple users, though each configuration may have undesirable characteristics. A single-user editing system, for example, does not permit collaboration or resource-sharing among users and may suffer from underutilization, i.e., may be idle during the times that the single user is not performing editing operations or may be nearly idle when the performed editing operations are not computationally expensive. Because a single-user system must be robust enough to handle the most complex editing tasks the user may execute, and because this robustness may come with an associated expense, any idle time the single-user system encounters wastes the capital invested in the system.
A multi-user system, on the other hand, may permit its users to share centrally-located media. For example, a file server may host a single copy of a media file and distribute it to client workstations connected over a local-area network. Alternatively, an http server may stream a media file to client workstations connected via the Internet. In either case, the centralized storage of the media file may increase the overall efficiency of the video-editing application. There are several disadvantages, however, to traditional multi-user editing systems. For one, they require both a powerful server to host and distribute the media files and powerful workstation clients to perform the actual editing. The workstation clients, like the single-user systems described above, must be robust enough to handle complex editing tasks yet may suffer from underutilization because a user at a given workstation will not always use the full power of the client. Furthermore, a file or http server lacks the ability to intelligently process a file or stream before sending it to a client. For example, a complex, professional-quality editing project may layer several audio and video clips together simultaneously to create composited media. The file or http server, however, must transmit the entirety of each layer to the requesting client, thereby further taxing system resources.
Another disadvantage of traditional multi-user systems is the large amount of network bandwidth they require. “Online” editing—the direct modification of a source media file by a client—requires either that the client first downloads the entire source media file from the server to local storage, uploading the media file when editing is complete, or that the client accesses the source media file via a networked file system. In either case, the large amount of network traffic generated between the server and the client requires a very high-bandwidth and expensive client/server network. To alleviate some of this traffic, traditional multi-user systems may use “offline” editing, wherein a reduced-sized copy of the source media (a “proxy”) is generated and sent to the client in lieu of the original, larger-sized media file. The client may edit the proxy, and the sequence of editing commands performed on the proxy (the “timeline”) may be applied (or “relinked”) to the source media. Offline editing, however, suffers from the disadvantage that a significant amount of network bandwidth and client processing power is still required to transmit and edit the proxy, in addition to the wasted time, processing resources and storage required to pre-generate these proxies. Furthermore, during the time that a user is editing an offline proxy, the source media may be changed by, for example, replacing the original media or adding new source media to the project thus necessitating the laborious task of keeping track of pre-generated proxy and continuously synchronizing them with the original media. Finally, complicated editing functions, such as certain high-end effects, cannot be performed offline and must be executed online.
Furthermore, traditional remote-access video systems generally do not permit the precise, fast, and frame-by-frame control of source media required for video editing. Most video encoding schemes use different types of frames, not all of which are self-contained. For example, a given frame may be a fully-specified picture frame known as an intra-coded picture frame or I-frame. Other frames, however, are not fully specified, and instead capture only differences between the current frame and the last I-frame. These frames are known as predicted-picture frames (“P-frames”) or bipredicted-picture frames (“B-frames”). If a user requests a frame that happens to be a P- or B-frame, an editing application must backtrack to the last I-frame and then track forward through the intermediary P- and B-frames, reconstructing the requested frame along the way. Fast execution of this operation, however, requires local access to the entire media file, which for traditional remote-access systems means downloading the entire media file and thereby incurring the network bandwidth penalties described above. Without local access to the source media file, a remote client estimates the position in the media file that a requested frame occupies, and any errors in the estimation incur a time penalty in the frame seek time.
Many of the above disadvantages are exacerbated by of higher-resolution video formats such as HDTV. The larger resolutions and corresponding file sizes of HDTV-like media files require both increased processing power to analyze and greater network bandwidths to transport. This trend will only continue as the resolution and quality of video signals increase, requiring ever-increasing amounts of client processing power and network speeds. Clearly, a need exists for a collaborative, multi-user video editing system that reduces or eliminates the dependency between media file size and client processing power/network bandwidth.